How to use other SCI port than designated 


If you use different ports for easyDSP than recommended in previous section, you can do monitoring operation but can't do RAM booting and flash programming since MCU has dedicated port for its SCI booting. In case you really need to use different port, you can try below method. Here TMS320F28377D is taken as an example but the other MCU can be used in similar way.

 

How to use the other ports than GPIO85 and GPIO84 with TMS320F28377D for EMIF :

First step, SCI booting done by GPIO85/GPIO84 and later monitoring done by the other GPIOs. To do so, additional hardware is necessary to switch easyDSP connection from GPIO85/GPIO84 to the other GPIOs right after booting completion. Please refer to below circuit whereDual SPDT (NLAS4684 from Onsemi,TS3A24159 from TIis used. FPGA can be used too.

http://www.onsemi.com/pub_link/Collateral/NLAS4684-D.PDF

http://www.ti.com/lit/ds/symlink/ts3a24159.pdf


 

To switch easyDSP connection, one more GPIO (here, GPIOx) is used. You can use any GPIO which you don't use in your application. The operation mechanism as below.

- After reset, GPIOx is input pin as reset default. The pull-up resistor on GPIOx decides SPDT connection, which makes easyDSP connected to GPIO85/84.- Once SCI booting is completed, it's user's task to switch easyDSP connection to the other ports. You can do as below.

- Makes GPIOx as output port and set its value to low, which makes easyDSP connection to GPIO28/29.

- The above operation can be done ineasyDSP_SCI_Init() in CPU1.

- Please change original coding as recommended below.

        ///////////////////////////////////////////////////////////////////////////////////

        // ORIGINAL CODING : SCI-A GPIO setting : SCIRXDA = GPIO 85, SCITXDA = GPIO84

        ///////////////////////////////////////////////////////////////////////////////////

        GPIO_SetupPinMux(84, GPIO_MUX_CPU1, 5);

        GPIO_SetupPinMux(85, GPIO_MUX_CPU1, 5);

        GPIO_SetupPinOptions(84, GPIO_OUTPUT, GPIO_ASYNC);

        GPIO_SetupPinOptions(85, GPIO_INPUT, GPIO_ASYNC);

        EALLOW;

        GpioCtrlRegs.GPCPUD.bit.GPIO85 = 0;         

        GpioCtrlRegs.GPCPUD.bit.GPIO84 = 0;          

        EDIS;

 

        //////////////////////////////////////////////////////////////////////////////////

        // MODIFIED CODING : SCI-A GPIO setting : SCIRXDA = GPIO 28, SCITXDA = GPIO29

        //////////////////////////////////////////////////////////////////////////////////

        GPIO_SetupPinMux(29, GPIO_MUX_CPU1, 1);

        GPIO_SetupPinMux(28, GPIO_MUX_CPU1, 1);

        GPIO_SetupPinOptions(29, GPIO_OUTPUT, GPIO_ASYNC);

        GPIO_SetupPinOptions(28, GPIO_INPUT, GPIO_ASYNC);

        EALLOW;

        GpioCtrlRegs.GPCPUD.bit.GPIO28 = 0;         

        GpioCtrlRegs.GPCPUD.bit.GPIO29 = 0;          

            EDIS;

        // easyDSP connected to GPIO28/29 by using GPIO31

        GPIO_SetupPinMux(31, GPIO_MUX_CPU1, 0);

        GPIO_SetupPinOptions(31, GPIO_OUTPUT, GPIO_PUSHPULL);

        GPIO_WritePin(31, 0);

/BOOT pin of easyDSP pod has pseudo open collector type, which means it becomes low during booting for flash programming or RAM booting but open after booting. So, no addtional measures are required when using GPIO72 as EMIF. But please note that easyDSP pod connection or disconnection during MCU operation is not recommended since it could make a unintended noise signal to GPIO72.

Using Get mode helps ? :

You might think to try Get mode since you can use SCI BOOT 1 in Get Mode after changing Zx-BOOTCTRL register. Since Zx-BOOTCTRL register is located in OTP area, you can not change its contens twice. Also you can not use flash booting.